經過這幾天的努力,我們已經把大部分的東西都準備好了,現在我們就要進行最後的整合啦~
首先,我們要了解一個重要的工具 → LangChain
LangChain 是一個框架,用於將 LLM 與各種功能模組(如資料檢索、Prompt 等)結合在一起,讓我們能夠快速構建基於 LLM 的應用程式。它專注於將多個步驟組合在一起,讓每個步驟中的輸入和輸出都可以靈活配置,從而實現更強大的功能,例如 RAG 等。
LangChain 的主要功能包括:
現在,我們就用實際的作法讓大家更加了解吧~
我們在串接之前,先給一個 Prompt 的模板,好讓我們將整理好的資料傳給 LLM:
prompt_template = f"""{PROMPT}
# 參考的原始資料
{result}
# 使用者問題
Question: {user_question}"""
在這個模板中,我們依序放入了我們設置好的 PROMPT、原始資料(result)與使用者問題(user_question),在我們整理好後就可以透過 LangChain 來進行串接啦!
利用 LangChain 來進行串接:
chain = (
{"result": lambda x: result, "question": RunnablePassthrough()}
| ChatPromptTemplate.from_template(prompt_template)
| llm
| StrOutputParser()
)
在這段串接中:
在我們串接完成後,就可以直接來進行問問題的環節啦!
我們直接設一個使用者問題(user_question),並且調用 invoke()來觸發 chain:
user_question = "請問什麼是量子計算?"
print(chain.invoke(user_question))
接下來,我們就可以得到 LLM 生成的回覆:
量子計算是一種利用量子力學原理進行計算的新型計算技術。與傳統計算機使用二進制比特不同,量子計算機使用量子比特(qubits),能夠在同時處於 0 和 1 的疊加狀態。這使得量子計算在某些問題上具有比經典計算更強大的計算能力,如因數分解和模擬分子結構。
theme: 量子計算
經歷過好幾天的努力,我們終於完成了一整個簡單的 RAG 問答系統啦!
接下來,我們就要將內容進行容器化後,部署上 Kubernetes 囉~